package controllers;

import models.SiteConfig;
import models.Usuario;
import play.mvc.Controller;
import play.mvc.With;

@With(AuthHandler.class)
public class Application extends Controller {
	public static void index() {
		render();
	}

	public static void sayHello(String name) {
	}

	public static void logout() {
		session.clear();
		redirect("/");
	}

	public static void rpxLogin(String token) throws Exception {
		LoginHandler loginHandler = new LoginHandler(SiteConfig.load().getConfig("rpxKey"));

		Usuario usuario = loginHandler.execute(token);

		doLogin(usuario);

		if (null == usuario) {
			forbidden();
		} else {
			redirect("/");
		}
	}

	private static void doLogin(Usuario usuario) {
		salvarSessao(usuario);
		persistir(usuario);
	}

	private static void persistir(Usuario objUsuario) {
		if (null != objUsuario) {
			Usuario objUsuarioExistente = Usuario.findByIdentifier(objUsuario
					.getIdentifier());

			if (null == objUsuarioExistente)
				objUsuario.insert();
		}
	}

	private static void salvarSessao(Usuario usuario) {
		String refUsuario = null;

		if (null != usuario) {
			refUsuario = usuario.getIdentifier();
		} else {
			usuario = Usuario.USUARIO_ANONIMO;
		}

		renderArgs.put("usuario", usuario);
		session.put(Usuario.USUARIO_REF, refUsuario);
	}
}